In general, a virtual machine is an efficient, isolated duplicate of a real machine. Virtual machines may be separated into two major categories, system virtual machines and process virtual machines. In brief, a system virtual machine provides a complete system platform which support the execution of a complete operating system. A process virtual machine is designed to run a single program, which means that it supports a single process.
System virtual machines allow the sharing of the underlying physical machine resources between different virtual machines, each running its own operating system. The software layer providing the virtualization is called a virtual machine monitor or a hypervisor. The hypervisor can run on bare hardware (native VM) or on top of an operating system (hosted VM), based on their use and degree of correspondence to a real machine. Utilizing a hypervisor enables multiple operating system environments to reside on a single computer.
The drawings referred to in this description should not be understood as being drawn to scale unless specifically noted.